package com.bbva.kyfb.kyfbbofc.converters;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang.StringUtils;

import com.bbva.jee.arq.spring.core.contexto.ArqSpringContext;
import com.bbva.jee.arq.spring.core.gce.ExcepcionEjecucionAplicacion;
import com.bbva.jee.arq.spring.core.log.I18nLog;
import com.bbva.jee.arq.spring.core.log.I18nLogFactory;
import com.bbva.jee.arq.spring.core.util.excepciones.PropiedadNoEncontradaExcepcion;
import com.bbva.jee.arq.spring.core.util.excepciones.PropiedadNoParseableExcepcion;
import com.bbva.kyfb.kyfbdto.firmas.bo.FicheroInfo;
import com.bbva.kyfb.kyfbdto.firmas.errores.Errores_kyfb_servicios;
import com.bbva.kyfb.kyfbdto.firmas.sistemasHost.ConsultaSituacionFicherosInDto;
import com.bbva.kyfb.kyfbutils.constantes.ConstantesFO;

/**
 * The Class DtoBoifToDtoConverter.
 */
public final class DtoBofcToDtoConverter {

	/** Variable LOG. */
	private static final I18nLog LOG = I18nLogFactory
	.getLogI18n(DtoBofcToDtoConverter.class);
	
    /**
     * Instantiates a new dto boif to dto converter.
     */
    private DtoBofcToDtoConverter() {
        //Evitamos instanciar
    }

    /**
     * FicheroInfo to consulta situacion ficheros in dto.
     *
     * @param the ficheroInfo 
     * @return the consultaSituacionFicheroInDto
     */    
    public static ConsultaSituacionFicherosInDto ficheroInfoToConsultaSituacionFicherosInDto(FicheroInfo file) {	//, int divisaIndex
        final SimpleDateFormat sdfHora = new SimpleDateFormat("kkmmssSS");
        
        ConsultaSituacionFicherosInDto consultaSituacionFicheroInDto = new ConsultaSituacionFicherosInDto();
                consultaSituacionFicheroInDto.setCanalSstt(Integer.valueOf(file.getCodCanal()));
                consultaSituacionFicheroInDto.setRefeexte(file.getsReferencia());

                boolean mockTest=false;
                
                try{
    				mockTest = ArqSpringContext.getPropiedadBoolean(ConstantesFO.TXTEST);
        		} catch (final PropiedadNoEncontradaExcepcion e1) {    				
	    			LOG.error("DtoBofcToDtoConverter.ficheroInfoToConsultaSituacionFicherosInDto - La propiedad "
	    					+ ConstantesFO.TXTEST + " no existe");
	    		} catch (final PropiedadNoParseableExcepcion e1) {
	    			LOG.error("DtoBofcToDtoConverter.ficheroInfoToConsultaSituacionFicherosInDto - La propiedad "
	    					+ ConstantesFO.TXTEST + " no es parseable");
	    		}    			
	    			
                consultaSituacionFicheroInDto.setHhmmsscc(new Integer(mockTest?"00000000":sdfHora.format(new Date()).substring(0,8)));
                consultaSituacionFicheroInDto.setFirmas(ConstantesFO.VACIO_ESPACIO);
                consultaSituacionFicheroInDto.setVersionSstt("0100");
                consultaSituacionFicheroInDto.setHueco1(ConstantesFO.VACIO_ESPACIO);
                consultaSituacionFicheroInDto.setComrefex("CONSITFIC");
                consultaSituacionFicheroInDto.setTipoAccion("1");
                consultaSituacionFicheroInDto.setFormatoAsunto(StringUtils.leftPad(ConstantesFO.FORMATO_ASUNTO,4, "0"));
                
         String bancsb;
         
                try {
                	bancsb = ArqSpringContext.getContextoEscritorio().getPerfil().getBancoFisico();                	
                } catch (NullPointerException e) {
                	throw new ExcepcionEjecucionAplicacion(Errores_kyfb_servicios.CAMPO_OBLIGATORIO_NO_INFORMADO, e);
        		}    
    
            if(bancsb.equals("73")){        //73 -> Codigo BancoInterno/bancoProducto de Portugal
                    bancsb="0182";
            }
                        
                consultaSituacionFicheroInDto.setBancsbSolici(Integer.valueOf(bancsb));
                consultaSituacionFicheroInDto.setRefeexteSolici(file.getsReferencia());
                consultaSituacionFicheroInDto.setHueco2(ConstantesFO.VACIO_ESPACIO);
                consultaSituacionFicheroInDto.setCanalSolici(Integer.valueOf(file.getCodCanal()));
                
        String codServicio = "0000";        
//            if(file.getCodServicio()!=null){
//            	codServicio = file.getCodServicio();
//            }
                
                consultaSituacionFicheroInDto.setServicioSolici(codServicio);
                
        BigDecimal bdDesde = new BigDecimal(0);;        
//	        if (file.getsImporteDesde() == null) {
//	            bdDesde = new BigDecimal(0);			//Constantes.IMPORTE_DESDE_DEFECTO
//	        } else {
//            	bdDesde = new BigDecimal(file.getsImporteDesde()).setScale(2, BigDecimal.ROUND_HALF_DOWN);
//            }

        		consultaSituacionFicheroInDto.setImporteDesde(bdDesde);                
                
        BigDecimal bdHasta = new BigDecimal(0);        
//	        if (file.getsImporteHasta() == null) {
//	        	bdHasta = new BigDecimal(0);			//Constantes.IMPORTE_HASTA_DEFECTO_2
//	        } else {
//	        	bdHasta = new BigDecimal(file.getsImporteHasta()).setScale(2, BigDecimal.ROUND_HALF_DOWN);
//            }
                
                consultaSituacionFicheroInDto.setImporteHasta(bdHasta);    
                
//         String[] divisas = file.getsDivisa();
//            if(divisas!=null){               
//                consultaSituacionFicheroInDto.setDivisa(divisas[divisaIndex]);
//            }
                  	
        Date fechaDesde = ConstantesFO.FECHA_DESDE_DEFECTO.getTime();
        Date fechaHasta = ConstantesFO.FECHA_HASTA_DEFECTO.getTime();	        	
	
        	if(file.getsFechaDesde()!=null){
        		fechaDesde = file.getsFechaDesde();
        	}
        	
        	if(file.getsFechaHasta()!=null){
        		fechaHasta = file.getsFechaHasta();
        	}           	

	        consultaSituacionFicheroInDto.setFechaDesde(fechaDesde);
	        consultaSituacionFicheroInDto.setFechaHasta(fechaHasta);	       
	    	
        return consultaSituacionFicheroInDto;
}

}
